Generally described, computer devices, such as personal computing devices (“PCs”), computing terminals, hand-held computers, mobile devices, and the like, provide a user with a variety of data processing functions. By utilizing various software applications resident on a computing device, the computing device can allow a user to communicate with other computing devices, to access information via a computer network, and/or to process data. To better facilitate interaction with a user, or group of users, the software applications can generates one or more user interfaces that are displayed on a computer display and interact with the user.
In one approach to a user interface, the user interface is limited to a text-based interface, in which a user manually enters commands to the software application via a computer keyboard. Text-based interfaces are inefficient, however, because they typically require the user to learn, and often memorize, a command language. Moreover, text-based interfaces require a user to be efficient in manipulating a keyboard. Another approach to a user interface involves a combination of graphical icons and text, which is generally referred to as a graphical-user interface (“GUI”).
In one GUI embodiment, a software application being executed by the computing device generates instructions to a computer device operating system that results in the display of graphical images and text, such as icons, images, colors, and animation, within a rectangular window displayed on the computer display. A user can interact with the software application by manipulating the GUI with a selection device, such as a computer mouse or a touch-screen. Often, the user is not required to memorize any textual commands and many GUIs share common interface functionality. For example, any number of software applications may utilize the same graphical icon depicting a computer printer to allow a user to print material by manipulating the printer graphical icon. As the user manipulates the GUI, the user's actions are interpreted by the computing device operating system and relayed to the corresponding software application. The user's action can result in a modification of the GUI, such as the depression of a button icon, and can further result in the initiation of an action by either the operating system and/or the software application.
One skilled in the relevant art will appreciate that a GUI can be represented in terms of a rich user interface programming framework that includes instances of a number of user interface objects (“UI object”), such as a display object. In turn, each instance of a UI object can be defined by various object characteristics, which are represented in the UI as UI object properties. For example, a GUI may include a number of identical UI objects, such as a graphical button that can be depressed by manipulating a mouse. However, each instance of the UI button object in the GUI may be defined as having specific, and often distinguishing property values, such as dimension, color, opacity, and the like. Accordingly, the UI object is defined, and represented on the computer display by the operating system, in terms of its characteristic property values (e.g., large, red, 50%).
In dynamic GUI, one or more of the UI object properties can be dependent on the value of another UI object property. For example, the width of a UI object may be defined mathematically in terms of being twice its length. Additionally, a UI object property may also be conditional on the value of another UI object property. For example, if a UI object is selected, the color value of the UI object and an adjacent object may be specified as gray, otherwise the color value of both objects may be specified as black. In these above-examples, the UI object properties can be represented in terms of a logical expression that allows the software application, or a computing device operating system, to determine the value of the property at any time by evaluating the expression. These types of property systems are commonly referred to as “dependency-based systems.”
In some conventional dependency-based systems, the operating system individually evaluates each property expression to determine property values. However, depending on the order utilized to evaluate, the modification of a single object property value, such as source object property, may subsequently affect any number of other property values, including the current object property value. Accordingly, the evaluation of single property value expression may require several operating system iterations, often in terms of screen regenerations, to obtain the final steady values of the object properties dependent on the source modification. However, continuous regeneration of the display by the operating system degrades the computing device's performance and diminishes the ability for the computing device to process additional system functions. Moreover, although some programmatic user interface configurations can predetermine system dependencies, such systems are not compatible with a dynamic user interface created by declarative languages.
Thus, there is a need for a system and method for efficiently processing property dependent-property changes in a dynamic user interface.